package com.example.demokaptcha.config;

import com.google.code.kaptcha.Producer;
import com.google.code.kaptcha.impl.DefaultKaptcha;
import com.google.code.kaptcha.util.Config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.Properties;

@Configuration
public class KaptchaConfig {

    @Bean
    public Producer kaptchaProducer() {
        DefaultKaptcha kaptcha = new DefaultKaptcha();
        Properties properties = new Properties();
//        配置项：kaptcha.producer.impl
//        描述：图片实现类
//        默认值：com.google.code.kaptcha.impl.DefaultKaptcha
//        配置项：kaptcha.textproducer.impl
//        描述：文本实现类
//        默认值：com.google.code.kaptcha.text.impl.DefaultTextCreator
        //验证码图片宽度  默认为200
        properties.setProperty("kaptcha.image.width", "150");
        //验证码图片高度  默认为50
        properties.setProperty("kaptcha.image.height", "40");
        //图片边框，合法值：yes , no
        properties.setProperty("kaptcha.border", "no");
        //描述：边框颜色，合法值： r,g,b (and optional alpha) 或者 white,black,blue. 默认值：black
        properties.setProperty("kaptcha.border.color", "white");
        //验证码文本字符大小  默认为40
        properties.setProperty("kaptcha.textproducer.font.size", "32");
        // 字体 默认值：Arial, Courier
        properties.setProperty("kaptcha.textproducer.font.names", "宋体,楷体,微软雅黑");
        //验证码文本字符颜色  默认为Color.BLACK
        properties.setProperty("kaptcha.textproducer.font.color", "0,0,0");
        // 验证码文本字符内容范围  默认为abcde2345678gfynmnpwx
        properties.setProperty("kaptcha.textproducer.char.string", "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYAZabcdefghijklmnopqrstuvwxyz");
        //验证码文本字符长度  默认为5
        properties.setProperty("kaptcha.textproducer.char.length", "6");
        //验证码噪点生成对象  默认为DefaultNoise
        // (设置NoNoise)
        properties.setProperty("kaptcha.noise.impl", "com.google.code.kaptcha.impl.NoNoise");
        /*
        配置项：kaptcha.noise.color
        描述：干扰 颜色，合法值： r,g,b 或者 white,black,blue.
        默认值：black
        */
//        properties.setProperty("kaptcha.noise.color", "blue");
        /*
        配置项：kaptcha.obscurificator.impl
        描述：图片样式，
        水纹 com.google.code.kaptcha.impl.WaterRipple
        鱼眼 com.google.code.kaptcha.impl.FishEyeGimpy
        阴影 com.google.code.kaptcha.impl.ShadowGimpy
        默认值：com.google.code.kaptcha.impl.WaterRipple
        */
        properties.setProperty("kaptcha.obscurificator.impl", "com.google.code.kaptcha.impl.ShadowGimpy");
/*
        配置项：kaptcha.background.impl
        描述：背景实现类
        默认值：com.google.code.kaptcha.impl.DefaultBackground*/
        properties.setProperty("kaptcha.background.impl", "com.google.code.kaptcha.impl.DefaultBackground");
        /*配置项：kaptcha.background.clear.from
        描述：背景颜色渐变，开始颜色
        默认值：light grey*/
//        properties.setProperty("kaptcha.background.clear.from", "light");

        /*配置项：kaptcha.background.clear.to
        描述：背景颜色渐变， 结束颜色
        默认值：white*/
//        properties.setProperty("kaptcha.background.clear.to", "white");

        /*配置项：kaptcha.word.impl
        描述：文字渲染器
        默认值：com.google.code.kaptcha.text.impl.DefaultWordRenderer*/

        Config config = new Config(properties);
        kaptcha.setConfig(config);
        return kaptcha;
    }
}